#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <sys/time.h>

// 信号处理函数
void handle_sigalrm(int sig) {
    printf("Received SIGALRM signal\n");
    // 重新设置SIGALRM定时器
    alarm(1);
}

void handle_sigvtalrm(int sig) {
    printf("Received SIGVTALRM signal\n");
}

int main() {
    // 注册信号处理函数
    signal(SIGALRM, handle_sigalrm);
    signal(SIGVTALRM, handle_sigvtalrm);

    // 设置SIGALRM定时器，每隔1秒触发一次
    alarm(1);

    // 设置SIGVTALRM定时器，每隔0.5秒触发一次
    struct itimerval timer;
    timer.it_value.tv_sec = 0;  // 初始值为0秒
    timer.it_value.tv_usec = 500000; // 初始值为500000微秒（0.5秒）
    timer.it_interval.tv_sec = 0;  // 间隔时间为0秒
    timer.it_interval.tv_usec = 500000; // 间隔时间为500000微秒（0.5秒）

    if (setitimer(ITIMER_VIRTUAL, &timer, NULL) == -1) {
        perror("setitimer");
        exit(EXIT_FAILURE);
    }

    // 进入无限循环，等待信号
    while (1) {

    }

    return 0;
}